package com.dataseek.iot.sys.utils;

import com.dataseek.iot.sys.entity.Menu;
import com.dataseek.iot.sys.vo.MenuVo;

import java.util.ArrayList;
import java.util.List;

/**
 * @discription:
 * @author: Freya.Yan
 * @date: 2022/3/16
 */
public class GetChildUtil {

    public static void findChilds(MenuVo root, List<Menu> list){
        List<MenuVo> childlist=new ArrayList<>();
        //遍历所有数据，找到是入参父节点的子节点的数据，然后加到childlist集合中。
        for (Menu menu :
                list) {
            Long pId = menu.getParentId();
            if (pId !=null && root.getMenuId()==pId) {
                MenuVo menuVo = new MenuVo();
                menuVo.setIsUniq(menu.getIsUniq());
                menuVo.setMenuId(menu.getMenuId());
                menuVo.setMenuName(menu.getMenuName());
                menuVo.setMenuType(menu.getMenuType());
                menuVo.setIcon(menu.getIcon());
                menuVo.setStatus(menu.getStatus());
                menuVo.setParentId(menu.getParentId());
                menuVo.setOrderNum(menu.getOrderNum());
                menuVo.setPath(menu.getPath());
                menuVo.setPerms(menu.getPerms());
                childlist.add(menuVo);
            }
        }
        //若子节点不存在，那么就不必再遍历子节点中的子节点了 直接返回。
        if(childlist.size()==0) {
            return;
        }
        //设置父节点的子节点列表
        root.setChilds(childlist);
        //若子节点存在，接着递归调用该方法，寻找子节点的子节点。
        for (MenuVo childs :
                childlist) {
            findChilds(childs, list);
        }
    }
}
